Cache injection is a promising technique for improving performance of input/output (“IO”) data transfers in the form of direct memory access (“DMA”)-write transfers. DMA-write transfers from an IO controller to memory, for example, may be used to bring IO data into a processor system. Cache injection may enable the IO controller (and potentially also other processing units or data-copy engines of the processor system) to explicitly specify the cache-/memory-location to which data should be written.
Advantageously, cache injection may reduce IO memory bandwidth requirements and improve IO performance, particularly for user-level interfaces. In this regard, the injected data may be used in the future, such as when a process is polling for such information or is put to sleep while waiting for such information. Software may provide an indication for such scenarios. Further, there are some indications that may be used by hardware, such as transfer sizes of different transfers, to indicate that cache injection is appropriate.
Multi-core processors generally include a significant number of caches, rendering cache injection techniques particularly useful. Particularly, multi-core systems are commonly used to consolidate several smaller servers using a supplemental layer for virtualization.